
/**
 * 昨天问题的解决：问了老师，老师说是授课老师录制视频时犯了错误。
 * 1. while(offset = this.indexOf(sep, start) !== -1)
 * 这句代码是错误的，会导致while(true)的无限循环，nodejs和浏览器环境中js运行机制没有区别
 * 2. console.log没有输出，原因是根本没引用到，这也是问题1的错误在视频中也没被发现的原因
 */

// 总体来说残留两个问题：
// 1. while(offset = this.indexOf(sep, start) !== -1)这句代码的机制。
// 2. ArrayBuffer.prototype.split = function (sep) {}中不能console.log输出信息的原因
Buffer.prototype.split = function (sep) {
  var len = Buffer.from(sep).length
  let ret = []
  let start = 0
  let offset = 0
  while(this.indexOf(sep, start) !== -1) {
    //offset = this.indexOf(sep, start) !== -1 在浏览器环境中执行结果和node中不一样
    offset = this.indexOf(sep, start)
    console.log(offset) //没有输出信息，也没报错
    ret.push(this.slice(start, offset))
    start = offset + len
  }
  ret.push(this.slice(start))
  return ret
}

let buf = Buffer.from('我爱父母，爱子女，爱妻子，我爱祖国爱')
let bufAry = buf.split('爱')
console.log(bufAry)
console.log(bufAry.toString())
// [
//   <Buffer e6 88 91>,
//   <Buffer e7 88 b6 e6 af 8d ef bc 8c>,
//   <Buffer e5 ad 90 e5 a5 b3 ef bc 8c>,
//   <Buffer e5 a6 bb e5 ad 90 ef bc 8c e6 88 91>,
//   <Buffer e7 a5 96 e5 9b bd>,
//   <Buffer >
// ]
// 我,父母，,子女，,妻子，我,祖国,

// var split = function (str,sep) {
//   var len = sep.length
//   let ret = []
//   let start = 0
//   let offset = 0
//   while(str.indexOf(sep, start) !== -1) {
//     offset = str.indexOf(sep,start)
//     ret.push(str.slice(start, offset))
//     start = offset + len
//   }
//   ret.push(this.slice(start))
//   return ret
// }
